import { isLoggedIn } from './auth.js'

// 无需登录即可访问的页面路径
const whiteList = [
  '/pages/login/index',
  '/pages/privacy/index'
]

/**
 * 检查页面是否需要登录
 * @param {String} path 页面路径
 * @returns {Boolean} 是否需要登录
 */
const needLogin = (path) => {
  // 检查是否在白名单中
  return !whiteList.some(item => path.indexOf(item) !== -1)
}

/**
 * 路由守卫，检查用户是否已登录
 * @param {Object} options 页面参数
 * @returns {Boolean} 是否允许访问
 */
export const checkLogin = (path) => {
  // 判断是否需要登录
  if (needLogin(path)) {
    // 检查是否已登录
    if (!isLoggedIn()) {
      // 未登录，跳转到登录页
      uni.showToast({
        title: '请先登录',
        icon: 'none'
      })
      
      // 延迟跳转，让用户看到提示
      setTimeout(() => {
        uni.navigateTo({
          url: '/pages/login/index'
        })
      }, 1500)
      
      return false
    }
  }
  
  return true
}

/**
 * 页面拦截器
 * 在页面onLoad或onShow时调用
 */
export const pageInterceptor = {
  onLoad() {
    const pages = getCurrentPages()
    const currentPage = pages[pages.length - 1]
    const path = `/${currentPage.route}`
    
    return checkLogin(path)
  },
  
  onShow() {
    const pages = getCurrentPages()
    const currentPage = pages[pages.length - 1]
    const path = `/${currentPage.route}`
    
    return checkLogin(path)
  }
} 